#pragma once

namespace col {

//! A generic singleton class.
template < typename T > 
class Singleton : public boost::noncopyable
{
public:
	//! Returns a reference to the one and only instance of T.
	static T &Get() 
	{ 
		static T instance;
		return instance;
	}
	virtual ~Singleton() { }
protected:
	Singleton() { }
};

}
